// import com.alibaba.druid.sql.ast.SQLExpr_ptr;
// import com.alibaba.druid.sql.ast.SQLObjectImpl;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include "../SQLObjectImpl.h"
#include "../../../utils/common_ptr.h"

class SQLExternalRecordFormat : virtual public SQLObjectImpl
{
public:
  SQLExpr_ptr delimitedBy;
  SQLExpr_ptr terminatedBy;
  SQLExpr_ptr escapedBy;
  SQLExpr_ptr collectionItemsTerminatedBy;
  SQLExpr_ptr mapKeysTerminatedBy;
  SQLExpr_ptr linesTerminatedBy;
  SQLExpr_ptr nullDefinedAs;
  SQLExpr_ptr serde;

  BOOL_ptr logfile;
  BOOL_ptr badfile;
  BOOL_ptr ltrim;
  BOOL_ptr missingFieldValuesAreNull;
  BOOL_ptr rejectRowsWithAllNullFields;

  SHAREDOBJECT(SQLExternalRecordFormat);
  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  SQLExpr_ptr getDelimitedBy();

  void setDelimitedBy(SQLExpr_ptr delimitedBy);

  SQLExpr_ptr getTerminatedBy();

  void setTerminatedBy(SQLExpr_ptr x);

  SQLExpr_ptr getSerde();

  void setSerde(SQLExpr_ptr x);

  SQLExpr_ptr getMapKeysTerminatedBy();

  void setMapKeysTerminatedBy(SQLExpr_ptr x);

  SQLExpr_ptr getCollectionItemsTerminatedBy();

  void setCollectionItemsTerminatedBy(SQLExpr_ptr x);

  SQLExpr_ptr getEscapedBy();

  void setEscapedBy(SQLExpr_ptr x);

  SQLExpr_ptr getLinesTerminatedBy();

  void setLinesTerminatedBy(SQLExpr_ptr x);

  SQLExpr_ptr getNullDefinedAs();

  void setNullDefinedAs(SQLExpr_ptr x);

  BOOL_ptr getLogfile();

  void setLogfile(BOOL_ptr logfile);

  BOOL_ptr getBadfile();

  void setBadfile(BOOL_ptr badfile);

  BOOL_ptr isLtrim();

  void setLtrim(BOOL_ptr ltrim);

  BOOL_ptr isRejectRowsWithAllNullFields();

  void setRejectRowsWithAllNullFields(BOOL_ptr rejectRowsWithAllNullFields);

  BOOL_ptr isMissingFieldValuesAreNull();

  void setMissingFieldValuesAreNull(BOOL_ptr missingFieldValuesAreNull);

  SQLObject_ptr clone();
};
